// src/locales/i18n.ts
import { createI18n } from 'vue-i18n';
import en from './en';
import zh from './zh';
import { watch } from 'vue';

// 定义支持的语言
const messages = {
  en,
  zh,
};
// 设置语言的枚举值类型
type LocaleType = 'zh' | 'en';
// 从 localStorage 获取语言设置，默认为 'en'
const savedLocale = localStorage.getItem('locale') ?? 'zh';

// 初始化 i18n 实例
const i18n = createI18n({
  legacy: false, // 使用 Composition API 模式
  locale: savedLocale as LocaleType, // 默认语言
  fallbackLocale: 'zh', // 回退语言
  messages,
});
// 监听语言变化并保存到 localStorage
i18n.global.locale.value = savedLocale as LocaleType;
watch(
  () => i18n.global.locale.value,
  (newLocale) => {
    localStorage.setItem('locale', newLocale);
  },
);

export default i18n;
